package com.rzico.sbl.picture

import android.content.Context
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.luck.picture.lib.engine.ImageEngine
import com.luck.picture.lib.utils.ActivityCompatHelper
import com.rzico.sbl.R
import com.xinnuo.common.extend.condition

/**
 * Glide相册图片加载引擎
 */
class PictureGlideEngine private constructor() : ImageEngine {

    companion object {

        @Volatile
        private var instance: PictureGlideEngine? = null

        fun createGlideEngine() =
            instance ?: synchronized(this) {
                instance ?: PictureGlideEngine().also { instance = it }
            }
    }

    /**
     * 加载图片
     *
     * @param context   上下文
     * @param url       图片路径
     * @param imageView 控件
     */
    override fun loadImage(
        context: Context,
        url: String,
        imageView: ImageView
    ) {
        Glide.with(context)
            .load(url)
            .into(imageView)
    }

    override fun loadImage(
        context: Context,
        imageView: ImageView,
        url: String,
        maxWidth: Int,
        maxHeight: Int
    ) {
        Glide.with(context)
            .load(url)
            .override(maxWidth, maxHeight)
            .into(imageView)
    }

    /**
     * 加载相册目录封面
     *
     * @param context   上下文
     * @param url       图片路径
     * @param imageView 承载图片ImageView
     */
    override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .asBitmap()
            .load(url)
            .override(180, 180)
            .sizeMultiplier(0.5f)
            .transform(CenterCrop(), RoundedCorners(8))
            .placeholder(R.drawable.ps_image_placeholder)
            .into(imageView)
    }

    /**
     * 加载图片列表图片
     *
     * @param context   上下文
     * @param url       图片路径
     * @param imageView 承载图片ImageView
     */
    override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
        ActivityCompatHelper
            .assertValidRequest(context)
            .condition {
                Glide.with(context)
                    .load(url)
                    .override(200, 200)
                    .centerCrop()
                    .placeholder(R.drawable.ps_image_placeholder)
                    .into(imageView)
            }
    }

    override fun pauseRequests(context: Context) {
        ActivityCompatHelper
            .assertValidRequest(context)
            .condition {
                Glide.with(context)
                    .pauseRequests()
            }

    }

    override fun resumeRequests(context: Context) {
        ActivityCompatHelper
            .assertValidRequest(context)
            .condition {
                Glide.with(context)
                    .resumeRequests()
            }
    }

}